nclude <iostream>
#include <vector>
using namespace std;

int main() 
{
    int n=0,q=0;
    cin>>n>>q;
    vector<long> v(n+1);
    for(int i=1;i<=n;i++) cin>>v[i];
    
    vector<long> cp(n+1);
    for(int i=1;i<=n;i++) cp[i]=cp[i-1]+v[i];
    
    int l=0,r=0;
    while(q--)
    {
        cin>>l>>r;
        cout<<cp[r]-cp[l-1]<<endl;
    }
    return 0;
}

#include <iostream>
#include <vector>
using namespace std;

int main() 
{
    int n=0,m=0,q=0;
    cin>>n>>m>>q;
    //1. 读入数据
    vector<vector<int>> arr(n+1,vector<int>(m+1));
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>arr[i][j];

    //2. 预处理前缀和矩阵
    vector<vector<long long>> dp(n+1,vector<long long>(m+1));
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            dp[i][j]=dp[i-1][j]+dp[i][j-1]+arr[i][j]-dp[i-1][j-1];
    //3. 使用前缀和矩阵
    int x1=0,x2=0,y1=0,y2=0;
    while(q--)
    {
        cin>>x1>>y1>>x2>>y2;
        cout<<dp[x2][y2]-dp[x1-1][y2]-dp[x2][y1-1]+dp[x1-1][y1-1]<<endl;
    }
    return 0;
}

class Solution {
public:
    int pivotIndex(vector<int>& nums) {
        int n=nums.size();
        vector<int> f(n),g(n);

        //1.预处理前缀和数组以及后缀和数组
        for(int i=1;i<n;i++)
            f[i]=f[i-1]+nums[i-1];
        for(int i=n-2;i>=0;i--)
            g[i]=g[i+1]+nums[i+1];
        
        //2.使用
        for(int i=0;i<n;i++)
            if(f[i]==g[i])
                return i;
        
        return -1;
    }
};

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) 
    {
        int n = nums.size();
        vector<int> f(n),g(n);

        //预处理前缀积数组和后缀积数组
        f[0]=g[n-1]=1;//细节问题
        for(int i=1;i<n;i++)
            f[i]=f[i-1]*nums[i-1];
        for(int i=n-2;i>=0;i--)
            g[i]=g[i+1]*nums[i+1];
        
        //使用
        vector<int> ret(n);
        for(int i=0;i<n;i++)
            ret[i]=f[i]*g[i];
        
        return ret;
    }
};

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) 
    {
        unordered_map<int,int> hash;//统计前缀和出现的次数
        hash[0]=1;

        int sum=0,ret=0;
        for(auto x : nums)
        {
            sum+=x;//计算当前位置的前缀和
            if(hash.count(sum-k)) ret+=hash[sum-k];
            hash[sum]++;
        }
        return ret;
    }
};


